import React from 'react'
import PropTypes from 'prop-types'
import Message from './Message'
export default class Product extends React.Component {

  render() {
    return (
      <div>
     name:{this.props.name}
     {this.props.optionalNode}
     {
       this.props.optionalMessage.getName()
     }
      </div>
    )
  }
}

Product.propTypes={
  //isRequired 参数必须传
  name:PropTypes.string.isRequired,
  price:PropTypes.number,
  optionalArray: PropTypes.array,
    // 任何可被渲染的元素（包括数字、字符串、元素或数组）
  // (或 Fragment) 也包含这些类型。
  optionalNode: PropTypes.node.isRequired,
    // 一个 React 元素。
    optionalElement: PropTypes.element,
      // 一个 React 元素类型（即，MyComponent）。
  optionalElementType: PropTypes.elementType,
  optionalMessage: PropTypes.instanceOf(Message).isRequired,
   // 你可以指定一个自定义验证器。它在验证失败时应返回一个 Error 对象。
  // 请不要使用 `console.warn` 或抛出异常，因为这在 `onOfType` 中不会起作用。
  city: function(props, propName, componentName) {
    if (!/太原/.test(props[propName])) {
      return new Error(
        'Invalid prop `' + propName + '` supplied to' +
        ' `' + componentName + '`. Validation failed.'
      );
    }
  },
}



